package observe_pattern.ex1;

import lombok.Getter;

import java.util.ArrayList;

/**
 * @author 申书航
 * @version 1.0
 * 角色技能的抽象类，管理观察者并提供通知功能
 */
public abstract class RoleSkill {

    protected final ArrayList<RoleObserve> observes;

    @Getter
    protected int hp;

    /**
     * 构造函数，初始化观察者列表
     */
    public RoleSkill() {
        observes = new ArrayList<>();
    }

    /**
     * 添加观察者
     * @param obs 需要添加的观察者
     */
    public void addTargets(RoleObserve obs) {
        observes.add(obs);
    }

    /**
     * 移除观察者
     * @param obs 需要移除的观察者
     */
    public void removeTargets(RoleObserve obs) {
        observes.remove(obs);
    }

    /**
     * 通知观察者的抽象方法
     * @param obs 被通知的观察者
     */
    public abstract void notify(RoleObserve obs);
}

